﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;

namespace PuanSunucusu
{
    public partial class frmPuanTanitim : DevExpress.XtraEditors.XtraForm
    {
        public frmPuanTanitim()
        {
            InitializeComponent();
        }


        private void Liste()
        {
            using (PromoEntities ent = new PromoEntities())
            {
                gridControl1.DataSource = ent.PuanTanimlari.Select(x => new { x.No, x.BaslangicTarihi, x.BitisTarihi }).ToList();
                gridView1.BestFitColumns();
            }
            Clear();
        }

        private void Clear()
        {
            txtNo.Text = "";
            txtAlisverisToplami.Text = "";
            txtAlisverisPuan.Text = "";
            txtTlKarsilik.Text = "";
            txtVerilecekPuan.Text = "";
            dteBaslangic.DateTime = DateTime.Now;
            dteBitis.DateTime = DateTime.Now;
            txtLimit.Text = "";
            txtMusteri.Text = "";
            cmbOdemeTipi.SelectedIndex = 0;
        }

        private void frmPuanTanitim_Load(object sender, EventArgs e)
        {
            cmbOdemeTipi.Properties.Items.AddRange(new string[] { "Nakit", "Kredi Kartı", "Açık Hesap", "Tümü" });
            cmbOdemeTipi.SelectedIndex = 0;
            Liste();
        }

        private void gridView1_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
        {
            if (gridView1.FocusedRowHandle > -1)
            {
                using (PromoEntities ent = new PromoEntities())
                {
                    int no = Convert.ToInt32(gridView1.GetFocusedRowCellDisplayText(gridView1.Columns["No"]));
                    var puan = ent.PuanTanimlari.Where(x => x.No == no).FirstOrDefault();
                    if (puan != null)
                    {
                        txtNo.Text = puan.No.ToString();
                        txtAlisverisToplami.Text = puan.AlisverisToplami.ToString();
                        txtAlisverisPuan.Text = puan.AlisverisPuani.ToString();
                        txtTlKarsilik.Text = puan.PuanParaKarsiligi.ToString();
                        txtVerilecekPuan.Text = puan.VerilecekPuan.ToString();
                        dteBaslangic.DateTime = puan.BaslangicTarihi;
                        dteBitis.DateTime = puan.BitisTarihi;
                        txtLimit.Text = puan.PuanlaOdemeFisLimiti.ToString();
                        txtMusteri.Text = puan.MusteriAraligi;
                        cmbOdemeTipi.SelectedIndex = puan.OdemeTipi;
                    }
                }
            }
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtNo.Text) && !string.IsNullOrEmpty(txtAlisverisToplami.Text))
                Kaydet();
        }

        private void Kaydet()
        {
            using (PromoEntities ent = new PromoEntities())
            {
                int no = Convert.ToInt32(txtNo.Text);
                var puan = ent.PuanTanimlari.Where(x => x.No == no).FirstOrDefault();
                if (puan != null)
                {
                    puan.AlisverisToplami = Convert.ToDouble(txtAlisverisToplami.Text);
                    puan.VerilecekPuan = Convert.ToDouble(txtVerilecekPuan.Text);

                    puan.PuanParaKarsiligi = Convert.ToDouble(txtTlKarsilik.Text);
                    puan.AlisverisPuani = Convert.ToDouble(txtAlisverisPuan.Text);

                    puan.BaslangicTarihi = dteBaslangic.DateTime;
                    puan.BitisTarihi = dteBitis.DateTime;
                    puan.PuanlaOdemeFisLimiti = Convert.ToDouble(txtLimit.Text);
                    puan.MusteriAraligi = txtMusteri.Text;
                    puan.OdemeTipi = (byte)cmbOdemeTipi.SelectedIndex;
                }
                else
                {
                    puan = new PuanTanim();
                    puan.No = no;
                    puan.AlisverisToplami = Convert.ToDouble(txtAlisverisToplami.Text);
                    puan.VerilecekPuan = Convert.ToDouble(txtVerilecekPuan.Text);

                    puan.PuanParaKarsiligi = Convert.ToDouble(txtTlKarsilik.Text);
                    puan.AlisverisPuani = Convert.ToDouble(txtAlisverisPuan.Text);

                    puan.BaslangicTarihi = dteBaslangic.DateTime;
                    puan.BitisTarihi = dteBitis.DateTime;
                    puan.PuanlaOdemeFisLimiti = Convert.ToDouble(txtLimit.Text);
                    puan.MusteriAraligi = txtMusteri.Text;
                    puan.OdemeTipi = (byte)cmbOdemeTipi.SelectedIndex;
                    ent.AddToPuanTanimlari(puan);
                }
                ent.SaveChanges();
            }
            Liste();
        }

        private void simpleButton2_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(txtNo.Text))
            {
                using (PromoEntities ent = new PromoEntities())
                {
                    int no = Convert.ToInt32(txtNo.Text);
                    var puan = ent.PuanTanimlari.Where(x => x.No == no).FirstOrDefault();
                    if (puan != null)
                    {
                        ent.DeleteObject(puan);
                        ent.SaveChanges();
                    }
                }
                Liste();
            }
        }

        private void labelControl7_Click(object sender, EventArgs e)
        {

        }

        private void labelControl4_Click(object sender, EventArgs e)
        {

        }

        private void labelControl2_Click(object sender, EventArgs e)
        {

        }

        private void labelControl1_Click(object sender, EventArgs e)
        {

        }
    }
}